package com.bill.common.user.dao;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.bill.common.user.dto.RegisterUserQueryDTO;
import com.bill.common.user.entity.RegisterUser;
import com.sinba.common.dao.IEntityDAO;
import com.sinba.common.dto.PageDTO;

public interface IRegisterUserDAO extends IEntityDAO<RegisterUser> {
	//pager
	PageDTO findPager( final RegisterUserQueryDTO qdto, String sord, String sidx );
	List<RegisterUser> userValidate(String loginName,String password,String pwdLevel);
	/**
	 * 分页查询我直推的用户
	 * @param qdto
	 * @param sord
	 * @param sidx
	 * @return
	 */
	PageDTO findDirectPushUserPager(RegisterUserQueryDTO qdto, String sord, String sidx );
	
	boolean findAreaRegUser(String contactNo,String area);
	List<RegisterUser> findLookPointAwardUser();
	List<RegisterUser> lastActiveUser(Date startTime);
	//查询的链接用户
	List<RegisterUser> findLinkUser(String linkCode);
	
	//统计链接下的用户总数
	Integer countLinkCode(String linkCode,String status);
	
	//符合极差的会员有
	List<RegisterUser> findJiCha(String linkCode,String[] notInUser);
	//符合极差的会员有(领导号)
	List<RegisterUser> findJiChaLeader(String linkCode,String[] leaderUser);
	
	//我的团队
	PageDTO myTeamPager(RegisterUserQueryDTO qdto, String sord, String sidx);
	//今天推荐人数(TodayRec)
	//今天推荐并激活人数(TodayRecActivation)
	//推荐全部人数(AllRec)
	//推荐已激活人数(AllRecActivation)
	//我的团队总数(Team)
	//我的团队激活人数(TeamActivation)
	Integer userCount(String loginName,String type,String[] notInUser);
	
	/**
	 * 查出我团队中推荐大于9的会员及会员团队数
	 * @param loginName
	 */
	List<Object[]> teamNumber(String linkCode,String notInLoginName);
	
	/**
	 * 要统计的用户
	 * @param queryDTO
	 * @return
	 */
	List<RegisterUser> findRegUser(RegisterUserQueryDTO queryDTO);
	
	RegisterUser findAreaRegUser1(String contactNo,String area);
	/**
	 * 反向取一条线的会员
	 * @param linkCode
	 * @param leaderUser
	 * @return
	 */
	List<RegisterUser> getReverseLineUser(String linkCode,String[] leaderUser);
	
	/**
	 * 判断是否是我团队
	 * @param linkCode
	 * @param loginName
	 * @return
	 */
	boolean isMyTeam(String linkCode,String loginName);
	
	
	/**
	 * 根据接点人查找
	 * @param users
	 * @return user
	 */
	List<RegisterUser> findContactUser(String[] loginNames);
	
	
	RegisterUser findAearContactUser(String loginName , String registerLocation);
	
	/**
	 * 查询已激活会员
	 * @return
	 */
	List<RegisterUser> findActivationUser();
	
	/**
	 * 判断我推荐的会员有没有在左区
	 * @param loginName
	 * @return 判断结果
	 */
	boolean myRecommedLeftArea(String loginName);
	
	/**
	 * 根据LinkCode查线最长的会员
	 * @param linkCode
	 * @return
	 */
	List<RegisterUser> findJiDianRen(String linkCode);
	/**
	 * 判断左区是否有激活会员
	 * @param linkCode
	 * @return
	 */
	boolean isLeftActiveUser(String linkCode);
	Map<String, RegisterUser> findUserByLoginNames( String[] loginNames );
	List<RegisterUser> findFreedUser();
}
